In prior systems, there are a certain number of request buffer locations and a certain number of response buffer locations. These buffer locations are fixed in the hardware and not changeable by software. In some systems, the request and response buffer locations are on physically separate hardware devices. Thus, the fixed nature causes an inherent inefficiency in the allocation of buffer space. Basically, the problem is that if a large number of request packets were received which fill up the buffer, additional request packets would have to be halted until the request packet buffer is emptied. This filling and emptying of buffers is time consuming and inefficient.
A consequence of this problem is that the buffer response time is not constant. Then there is a possibility that if a next packet is one of the type that can be sent out and used right away, and there is no buffer space at that time, the packet will be delayed until the buffer becomes open. This problem greatly affects performance of the system.
It is therefore desirable to have a system that makes more efficient use of the available buffer space and reduces the probability that a data packet will be delayed due to congestion in the queue buffers.
It is therefore further desirable to have a system that has more efficient distribution of data packets and positively impacts system performance, by maintaining open queue buffer space, and thus allowing better throughput of data packets.